﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GestionePolveriLib.Facades;

namespace GestionePolveriLib.BL.FilterBags
{
    public static class FilterBagHelper
    {
        public static string GetFamigliaTraceString(string famiglia)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(famiglia))
            {
                FamigliaColoriFacade fcf = new FamigliaColoriFacade();

                StringBuilder sb1 = new StringBuilder();

                if (famiglia.Contains(','))
                {
                    string[] ids = famiglia.Split(new char[] { ',' });

                    for (int i = 0; i < ids.Length; i++)
                    {
                        FamigliaColore fc = fcf.Get(int.Parse(ids[i]));

                        if (i == 0)
                            sb1.AppendFormat("{0}", fc.Descrizione);
                        else
                            sb1.AppendFormat(", {0}", fc.Descrizione);
                    }
                }
                else
                {
                    FamigliaColore fc = fcf.Get(int.Parse(famiglia));
                    sb1.AppendFormat("{0}", fc.Descrizione);
                }

                retValue = string.Format(" Famiglia: {0};", sb1.ToString());
            }

            return retValue;
        }

        public static string GetImpiantoTraceString(string impianto)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(impianto))
            {
                ImpiantoFacade impf = new ImpiantoFacade();

                StringBuilder sb1 = new StringBuilder();

                if (impianto.Contains(','))
                {
                    string[] ids = impianto.Split(new char[] { ',' });

                    for (int i=0; i<ids.Length; i++)
                    {
                        Impianto imp = impf.GetImpianto(int.Parse(ids[i]));

                        if (i == 0)
                            sb1.AppendFormat("{0}", imp.Nome);
                        else
                            sb1.AppendFormat(", {0}", imp.Nome);
                    }
                }
                else
                {
                    Impianto imp = impf.GetImpianto(int.Parse(impianto));
                    sb1.AppendFormat("{0}", imp.Nome);
                }

                retValue = string.Format(" Impianto: {0};", sb1.ToString());
            }

            return retValue;
        }

        public static string GetImpiantoTraceString(int[] impianto)
        {
            string retValue = string.Empty;

            if (impianto != null)
            {
                ImpiantoFacade impf = new ImpiantoFacade();

                StringBuilder sb1 = new StringBuilder();

                for (int i = 0; i < impianto.Length; i++)
                {
                    Impianto imp = impf.GetImpianto(impianto[i]);

                    if (i == 0)
                        sb1.AppendFormat("{0}", imp.Nome);
                    else
                        sb1.AppendFormat(", {0}", imp.Nome);
                }

                retValue = string.Format(" Impianto: {0};", sb1.ToString());
            }

            return retValue;
        }
        public static string GetCodicePolvereTraceString(string codicePolvere)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(codicePolvere))
            {
                retValue = string.Format(" Codice Polvere: {0};", codicePolvere);
            }

            return retValue;
        }

        public static string GetApplicazioneTraceString(string applicazione)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(applicazione))
            {
                retValue = string.Format(" Applicazione: {0};", applicazione);
            }

            return retValue;
        }

        public static string GetCodiceColoreTraceString(string codiceColore)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(codiceColore))
            {
                retValue = string.Format(" Codice Colore: {0};", codiceColore);
            }

            return retValue;
        }

        public static string GetOrdinamentoTraceString(byte ordinamento)
        {
            string retValue = string.Empty;

            switch (ordinamento)
            {
                case 1:
                    retValue = string.Format(" Ordinamento: Famiglia, Codice Polvere;");
                    break;
                case 2:
                    retValue = string.Format(" Ordinamento: Famiglia, Codice Colore;");
                    break;
            }

            return retValue;
        }

        public static string GetTipoTraceString(PolvereTypes tipo)
        {
            string retValue = string.Empty;

            retValue = string.Format(" Tipo: {0};", Enum.GetName(typeof(PolvereTypes), tipo));

            return retValue;
        }

        public static string GetCodiceLottoTraceString(string codiceLotto)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(codiceLotto))
            {
                retValue = string.Format(" Codice Lotto: {0};", codiceLotto);
            }

            return retValue;
        }

        public static string GetFornitoreTraceString(string fornitore)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(fornitore))
            {
                retValue = string.Format(" Fornitore: {0};", fornitore);
            }

            return retValue;
        }

        public static string GetCodiceColoreTraceString(int idColore)
        {
            string retValue = string.Empty;

            if (idColore != -1)
            {
                ColoriFacade cf = new ColoriFacade();
                Colore c = cf.Get(idColore);
                retValue = string.Format(" Codice Colore: {0};", c.CodiceColore);
            }

            return retValue;
        }

        public static string GetIndicazionePolvereTraceString(IndicazionePolvere indicazionePolvere)
        {
            string retValue = string.Empty;

            retValue = string.Format(" Indicazione Polvere: {0};", Enum.GetName(typeof(IndicazionePolvere), indicazionePolvere));

            return retValue;
        }

        public static string GetCausaleMagazzinoTraceString(int[] causaleMagazzino)
        {
            string retValue = string.Empty;

            if (causaleMagazzino != null)
            {
                CausaliMagazzinoFacade impf = new CausaliMagazzinoFacade();

                StringBuilder sb1 = new StringBuilder();

                for (int i = 0; i < causaleMagazzino.Length; i++)
                {
                    CausaleMagazzino imp = impf.GetCausaleByID(causaleMagazzino[i]);

                    if (i == 0)
                        sb1.AppendFormat("{0}", imp.Descrizione);
                    else
                        sb1.AppendFormat(", {0}", imp.Descrizione);
                }

                retValue = string.Format(" Causale Magazzino: {0};", sb1.ToString());
            }

            return retValue;
        }

        public static string GetCausaleScaricoTraceString(string causaleScarico)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(causaleScarico))
            {
                CausaliScaricoFacade impf = new CausaliScaricoFacade();

                CausaleScarico cs = impf.GetCausaleScarico(causaleScarico);

                retValue = string.Format(" Causale Scarico: {0};", cs.Descrizione);
            }

            return retValue;
        }

        public static string GetOperatoreTraceString(string operatore)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(operatore))
            {
                retValue = string.Format(" Codice Operatore: {0};", operatore);
            }

            return retValue;
        }

        public static string GetLoadingModeTraceString(LottoLoadingModes lottoLoadingMode)
        {
            string retValue = string.Empty;

            retValue = string.Format(" Mod. Caricamento Lotti: {0};", Enum.GetName(typeof(LottoLoadingModes), lottoLoadingMode));

            return retValue;
        }

        public static string GetNumDDTTraceString(string numDDT)
        {
            string retValue = string.Empty;

            if (!string.IsNullOrWhiteSpace(numDDT))
            {
                retValue = string.Format(" Num. DDT: {0};", numDDT);
            }

            return retValue;
        }

        public static string GetTipoLottoTraceString(LottoTypes lottoType)
        {
            string retValue = string.Empty;

            retValue = string.Format(" Mod. Caricamento Lotti: {0};", Enum.GetName(typeof(LottoTypes), lottoType));

            return retValue;
        }
    }
}
